import axios from 'axios' // 引入axios文件 

export function request(config, isurl = "") { 
  const instance = axios.create({
    //api https://api.filscout.com/
    baseURL: isurl == '' ? 'http://47.106.15.217:9001/' : isurl, // 请求数据的接口
    timeout: 5000 //设置时间超时，单位毫秒
  })

  instance.defaults.retry = 3 // 请求重试次数
  instance.defaults.retryDelay = 2000 // 请求重试时间间隔
  instance.defaults.shouldRetry = true // 是否重试
  //请求拦截
  instance.interceptors.request.use(config => {   
    return config;
  },
    error => {
      Promise.reject(error)
    }
  );
  //响应拦截
  instance.interceptors.response.use(res => {
    //保证必须有数据
    if (res.status === 200 && res.data.data != "") {
      return res.data //成功请求
    }
    return [];
  }, error => {
    const { response } = error;
    if (response) {
      // 请求已发出，但是不在2xx的范围
      errorHandle(response.status, response.data.message);
      return Promise.reject(response);
    } else {
      // Toast.fail('加载中...');
      return Promise.reject(' 自定义 500')

    }
  });
  return instance(config)
}


/**
* 请求失败后的错误统一处理
* @param {Number} status 请求失败的状态码
*/
const errorHandle = (status, other) => {
  // 状态码判断
  switch (status) {
    case 401:
      console.log("401,接口需要登陆");
      break;
    // 403 token过期
    // 清除token并跳转登录页
    case 403:
      console.log("403,token 过期");
      break;
    // 404请求不存在
    case 404:
      console.log("404,页面错误");
      break;
    default:
      console.log(other);
  }
}